import axios from "axios";
import {ElMessage} from 'element-plus';
import router from "@/router";




//底下的代码也是创建axios实例
axios.defaults.withCredentials = true;
//设置全局的请求次数，请求的间隙
// 重传次数
axios.defaults.retry = 0;
//延时秒数
axios.defaults.retryDelay = 10000;


let requests = axios.create({
    //基础路径
    //baseURL:'http://localhost:9090',

    baseURL:'/api',
    //请求不能超过10S
    timeout: 10000,
});


// requests.interceptors.response.use(res=>{
//     //3.1 对响应数据进行处理
//     let data = res.data;
//     let code = data.code;
//
//     if(code === 200){
//         //请求成功时,将res.data对象返回给响应对象
//         return res;
//     } else {
//         return Promise.reject(res);
//     }
// },(error)=>{
//     if(error.response.status===511){
//
//         return Promise.reject(error.response).catch(res=>{
//
//             // router.push('/')
//         })
//     }
//
//     return Promise.reject(error);
// })

requests.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    // 判断是否存在token,如果存在将每个页面header添加token
    if (localStorage.getItem("token")) {
        config.headers['token'] = localStorage.getItem("token");
    }
    return config
})

requests.interceptors.response.use(
    (res)=>{
        if(res.data.code==="1001"){
            router.push("/")
            ElMessage.error("登录过期了，请重新登录")
        }
        console.log(res)
        return res
    },
    (res)=>{
        // ElMessage.error("请求错误")
        console.log(res)
        if(res.response) {
            ElMessage.error(res.response.data.message)
        }
        return res.response
    }

    )

//配置
// requests.interceptors.response.use(undefined, function axiosRetryInterceptor(err) {
//
//     var config = err.config;
// //    （如果配置都不存在或者超时不存在，）
//     if(!config || !config.retry) {return Promise.reject(err)}
//
//     // 如果为0则为0，否则为自己
//     config.__retryCount = config.__retryCount || 0;
//
//     // 超过重传错误，去报错
//     if(config.__retryCount >= config.retry) {
//         // Reject with the error
//         return Promise.reject(err);
//     }
//
//     // 增加次数
//     config.__retryCount += 1;
//
//     // 超时提示  elementui
//     Message({
//         message: "网络超时，正在重新发起请求，请检查本地网络情况",
//         type: 'error',
//     });
//     //创建新的promise请求，延时你设定的秒数
//     var backoff = new Promise(function(resolve) {
//         //错误信息
//         setTimeout(function() {
//             resolve();
//         }, config.retryDelay || 1);
//     });
//     // 重新发起新的请求
//     return backoff.then(function() {
//
//         return axios(config);
//     });
// });

export default requests;
